package com.example.clientesoap;

import java.io.IOException;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;

public class Encuesta extends Activity {
	private int contador = 0;
	private String recuperarNombre = "";
	private String resumen="";

	private TextView txtResultadoServicio;
	private TextView txtNombreRecuperado;
	private String url = "http://10.0.2.2:8080/Taller1WS_2/services/ServicioWebEncuesta";
	private String NAMESPACE = "http://ws.encuesta";

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_encuesta);
		super.onCreate(savedInstanceState);
		txtResultadoServicio = (TextView) findViewById(R.id.txt_resultado_servicio);
		txtNombreRecuperado = (TextView) findViewById(R.id.txtNombre);
		recuperarNombre = getIntent().getStringExtra("variable_nombre");
		txtNombreRecuperado.setText(recuperarNombre);
		this.obtenerPregunta(null);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.activity_pregunta1, menu);
		return true;
	}

	// Metodo para obtener la pregunta que respondera el usuario
	public void obtenerPregunta(View v) {
		new obtenerPreguntaBackground().execute();
	}

	public void obtenerPreguntaSi(View v) {
		this.resumen+="\n"+txtResultadoServicio.getText().toString()+"\n Si";
		this.validarContador();
		new obtenerPreguntaBackground().execute();
		
	}

	public void obtenerPreguntaNo(View v) {
		this.resumen+="\n"+txtResultadoServicio.getText().toString()+"\n No";
		this.validarContador();
		new obtenerPreguntaBackground().execute();
		
	}
	public void validarContador(){
		if(this.contador>4){
			this.ir(null);
		}
		
	}
	public void ir(View v) {
		Intent i = new Intent(this, Resumen.class);
		i.putExtra("variable_nombre", resumen);
		startActivity(i);
		finish();
	}

	/*
	 * Metodo para ir a la siguiente actividad public void ir(View v) {
	 * 
	 * Intent i = new Intent(this, Pregunta2.class); startActivity(i); }
	 */

	class obtenerPreguntaBackground extends AsyncTask<Void, Void, String> {

		@Override
		protected String doInBackground(Void... params) {

			String resultadoJSON = "";
			String METHOD_NAME = "getPreguntas";
			String SOAP_ACTION = NAMESPACE + "/" + METHOD_NAME;
			SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
			SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(
					SoapEnvelope.VER11);
			soapEnvelope.dotNet = true;
			soapEnvelope.implicitTypes = true;
			soapEnvelope.setOutputSoapObject(request);

			HttpTransportSE aht = new HttpTransportSE(url);
			Log.d("Cliente SOAP", "Iniciando Consulta");
			try {
				aht.call(SOAP_ACTION, soapEnvelope);
				SoapPrimitive resultString = (SoapPrimitive) soapEnvelope
						.getResponse();
				resultadoJSON = resultString.toString();
				Log.d("Cliente SOAP", "Finalizando Consulta");

			} catch (IOException e) {

				e.printStackTrace();
			} catch (XmlPullParserException e) {
				e.printStackTrace();
			}

			return resultadoJSON;
		}

		@Override
		protected void onPostExecute(String result) {
			super.onPostExecute(result);
			try {
				String texto = "";
				JSONObject resultado = new JSONObject(result);
				// texto += resultado.getString("Titulo") + "\n";
				String contenido = resultado.getString("Contenido");
				Log.d("ClienteSoap", contenido);
				JSONArray preguntasJSONArray = new JSONArray(contenido);

				texto += "\n"
						+ preguntasJSONArray.getJSONObject(contador).getString(
								"id") + ") ";
				texto += preguntasJSONArray.getJSONObject(contador).getString(
						"descripcion")
						+ "\n";
				txtResultadoServicio.setText(texto);
				contador++;
			} catch (JSONException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}
	}

}